/* 
有两个循环单链表，链表头指针分别为h1,h2,
试编写函数将 h2链表接到h1之后，要求链接后仍保持循环链表形式 
*/
#include <iostream>
#include "circlesinglefun.h"
using namespace std;

// 链接两个链表
void link(LNode *&h1, LNode *&h2)
{
  // 指向两个链表
  LNode *p, *q;
  p = h1, q = h2;
  
  // 指向 h1 链表的末尾
  while (p->next != h1)
    p = p->next;
  
  // 指向 h2 链表的末尾
  while (q->next != h2)
    q = q->next;
  
  // 链接
  p->next = h2;
  q->next = h1;
}

int main()
{
  // 创建两个循环单链表
  LNode *A = circle_single_link_list();
  LNode *B = circle_single_link_list();
  
  // 链接两个链表
  link(A, B);
  
  // 遍历循环单链表，并打印信息
  LNode *q = A->next;
  while (q != A)
  {
    cout << q->data << " ";
    q = q->next;
  }
  return 0;
}